<!DOCTYPE html>


<html lang="en">
  

    <head>
      <meta charset="utf-8" />
        
      <meta name="description" content="時光的个人博客" />
      
      <meta
        name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1"
      />
	  <meta name="referrer" content="no-referrer" />

      <title>E9安装手册 |  時光</title>
  <meta name="generator" content="hexo-theme-ayer">
      
      <link rel="shortcut icon" href="/favicon.ico" />
       
<link rel="stylesheet" href="/dist/main.css">

      
<link rel="stylesheet" href="/css/fonts/remixicon.css">

      
<link rel="stylesheet" href="/css/custom.css">
 
      <script src="https://cdn.staticfile.org/pace/1.2.4/pace.min.js"></script>
       
 

      <link
        rel="stylesheet"
        href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-bulma@5.0.1/bulma.min.css"
      />
      <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.19/dist/sweetalert2.min.js"></script>

      <!-- mermaid -->
      
      <style>
        .swal2-styled.swal2-confirm {
          font-size: 1.6rem;
        }
      </style>
    <link rel="alternate" href="/atom.xml" title="時光" type="application/atom+xml">
</head>
  </html>
</html>


<body>
  <div id="app">
    
      
    <main class="content on">
      <section class="outer">
  <article
  id="post-E9安装手册"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h1 class="article-title sea-center" style="border-left:0" itemprop="name">
  E9安装手册
</h1>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/11/14/E9%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C/" class="article-date">
  <time datetime="2023-11-14T10:22:37.612Z" itemprop="datePublished">2023-11-14</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/">安装教程</a>
  </div>
  
<div class="word_count">
    <span class="post-time">
        <span class="post-meta-item-icon">
            <i class="ri-quill-pen-line"></i>
            <span class="post-meta-item-text"> Word count:</span>
            <span class="post-count">2.2k</span>
        </span>
    </span>

    <span class="post-time">
        &nbsp; | &nbsp;
        <span class="post-meta-item-icon">
            <i class="ri-book-open-line"></i>
            <span class="post-meta-item-text"> Reading time≈</span>
            <span class="post-count">9 min</span>
        </span>
    </span>
</div>
 
    </div>
      
    <div class="tocbot"></div>




  
    <div class="article-entry" itemprop="articleBody">
       
  <h1 id="E9安装手册"><a href="#E9安装手册" class="headerlink" title="E9安装手册"></a>E9安装手册</h1><h2 id="安装包获取"><a href="#安装包获取" class="headerlink" title="安装包获取"></a>安装包获取</h2><p>安装所需文件可在泛微emobile技术门户获取，泛微会定期维护</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114224500581-1299887758.png" alt="image-20231114224459866"></p>
<h2 id="自动部署"><a href="#自动部署" class="headerlink" title="自动部署"></a>自动部署</h2><h3 id="1、通过-SSH-工具连接上-linux，创建应用程序目录"><a href="#1、通过-SSH-工具连接上-linux，创建应用程序目录" class="headerlink" title="1、通过 SSH 工具连接上 linux，创建应用程序目录"></a>1、通过 SSH 工具连接上 linux，创建应用程序目录</h3><p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114182415612-2082326022.png" alt="image-20231114182416386"></p>
<p>可根据客户实际要求创建在任何路径下，保证有足够的空间即可，相关命令为：</p>
<figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p /usr/weaver</span><br></pre></td></tr></table></figure>

<h3 id="2、通过-FTP-工具上传程序"><a href="#2、通过-FTP-工具上传程序" class="headerlink" title="2、通过 FTP 工具上传程序"></a>2、通过 FTP 工具上传程序</h3><p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114183225920-1661277848.png" alt="image-20231114183226839"></p>
<p>将本地的 ECOLOGY相关程序上传到创建好的 weaver 目录下。共四个，JDK，RESIN，ECOLOGY 和 Ecology_setup_forLinux_*.py 文件。<strong>（JDK 必须提前下载好）</strong></p>
<h3 id="3、执行-Ecology-setup-forLinux-py"><a href="#3、执行-Ecology-setup-forLinux-py" class="headerlink" title="3、执行 Ecology_setup_forLinux_*.py"></a>3、执行 Ecology_setup_forLinux_*.py</h3><p>即输入命令：python Ecology_setup_forLinux_*.py 回车，此处我使用的版本为v2.66</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python Ecology_setup_forLinux_v2<span class="number">.66</span>.py</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114183453528-1838303529.png" alt="image-20231114183454149"></p>
<p>如果选择 1 自动执行以下三步操作： </p>
<p>第一步：解压缩。（Linux 必须支持 unzip 及 tar 命令，没有需要提前安装好，否则无法解压） </p>
<p>第二步：给 ecology、jdk、resin 三个目录赋权。 </p>
<p>第三步：修改配置文件。设置路径、内存、端口。（内存和端口可在安装过程中进行调整）。 </p>
<p>如果选择 2 自动解压缩失败可在手动解压好的情况下，进行第二步和第三步配置。 </p>
<p>如果选择 3 查看配置好的相关参数，仅查看，若要调整，可再选择 2 或手动调整。</p>
<p>此处输入1</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114184102932-842439474.png" alt="image-20231114184103511"></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114184352271-147344098.png" alt="image-20231114184352829"></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114184505473-1544093421.png" alt="image-20231114184506165"></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114193416303-1152725752.png" alt="image-20231114193414751"></p>
<p>本页面为配置完成后，切换到 Resin4&#x2F;bin (或者Resin&#x2F;bin) 目录后，启动 resin 服务。</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd /usr/weaver/Resin4/bin</span><br><span class="line">./startresin.sh</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114193716924-2136306748.png" alt="image-20231114193711901"></p>
<p>服务启动好后，访问服务器ip及刚才设置的端口即可进入数据库初始化页面</p>
<p>能打开此页面代表Resin服务部署成功</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114221800304-1317730758.png" alt="image-20231114221759787"></p>
<p>如果 自动部署操作不成功，那就只能手动部署。 </p>
<h2 id="手动部署"><a href="#手动部署" class="headerlink" title="手动部署"></a>手动部署</h2><h3 id="（1）端口（三个端口）"><a href="#（1）端口（三个端口）" class="headerlink" title="（1）端口（三个端口）"></a>（1）端口（三个端口）</h3><p>http 端口（Resin&#x2F;conf&#x2F;resin.properties）浏览器访问时用到的端口，根据实际调整 </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">app.http : 80</span><br></pre></td></tr></table></figure>

<p>server 端口（Resin&#x2F;conf&#x2F;resin.properties）默认不需要修改 </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">app_servers : 127.0.0.1:6800</span><br></pre></td></tr></table></figure>

<p>watchdog 端口（Resin&#x2F;conf&#x2F;resin.xml）默认不需要修改 </p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">server-multi</span> <span class="attr">id-prefix</span>=<span class="string">&quot;app-&quot;</span> <span class="attr">address-list</span>=<span class="string">&quot;$&#123;app_servers&#125;&quot;</span> <span class="attr">port</span>=<span class="string">&quot;6800&quot;</span>&gt;</span></span><br><span class="line">	    <span class="tag">&lt;<span class="name">watchdog-port</span>&gt;</span>6600<span class="tag">&lt;/<span class="name">watchdog-port</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">server-multi</span>&gt;</span></span><br></pre></td></tr></table></figure>

<h3 id="（2）内存（Resin-x2F-conf-x2F-resin-properties）"><a href="#（2）内存（Resin-x2F-conf-x2F-resin-properties）" class="headerlink" title="（2）内存（Resin&#x2F;conf&#x2F;resin.properties）"></a>（2）内存（Resin&#x2F;conf&#x2F;resin.properties）</h3><p>根据实际可用内存调整，不要低于 3550</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># Arg passed directly to the JVM</span><br><span class="line"> jvm_args  : -Xmx5550m -Xms5550m -XX:CompileThreshold=100000 -XX:ReservedCodeCacheSize=512m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:-OmitStackTraceInFastThrow -XX:+UseParNewGC -XX:+DisableExplicitGC -javaagent:wagent.jar -javaagent:stophotdeploy.jar -Djdk.tls.ephemeralDHKeySize=2048 -Dfile.encoding=GBK -javaagent:rasp/rasp.jar</span><br></pre></td></tr></table></figure>

<h3 id="（3）路径（两个路径）"><a href="#（3）路径（两个路径）" class="headerlink" title="（3）路径（两个路径）"></a>（3）路径（两个路径）</h3><p>JDK 路径（Resin&#x2F;conf&#x2F;resin.xml）根据实际调整</p>
<p>官方部署文档：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&lt;!--</span><br><span class="line"> - You can change the compiler to &quot;javac&quot;, &quot;eclipse&quot; or &quot;internal&quot;.</span><br><span class="line"> --&gt;</span><br><span class="line"> &lt;javac compiler=&quot;/usr/weaver/jdk1.8.0_151/bin/javac&quot; args=&quot;-encoding UTF-8&quot;/&gt;</span><br><span class="line"></span><br></pre></td></tr></table></figure>

<p>我本地实际为：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&lt;!--</span><br><span class="line">     - You can change the compiler to &quot;javac&quot;, &quot;eclipse&quot; or &quot;internal&quot;.</span><br><span class="line">    --&gt;</span><br><span class="line">   &lt;javac compiler=&quot;internal&quot; args=&quot;-encoding UTF-8&quot;/&gt;</span><br></pre></td></tr></table></figure>



<p>应用程序路径（Resin&#x2F;conf&#x2F;resin.xml）根据实际调整</p>
<p><code>&lt;web-app id=&quot;/&quot; root-directory=&quot;/usr/weaver/ecology&quot;&gt;</code></p>
<p>官方部署文档：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- the default host, matching any host name --&gt;</span><br><span class="line"> &lt;host id=&quot;&quot; root-directory=&quot;.&quot;&gt;</span><br><span class="line"> &lt;!--</span><br><span class="line"> - webapps can be overridden/extended in the resin.xml</span><br><span class="line"> --&gt;</span><br><span class="line"> &lt;web-app id=&quot;/&quot; root-directory=&quot;/usr/weaver/ecology&quot;&gt;</span><br><span class="line">&lt;servlet-mapping url-pattern=&#x27;/weaver/*&#x27; servlet-name=&#x27;invoker&#x27;/&gt;</span><br><span class="line"> &lt;/web-app&gt;</span><br><span class="line"> &lt;/host&gt;</span><br></pre></td></tr></table></figure>

<p>我本地实际为：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">&lt;host id=&quot;&quot; root-directory=&quot;.&quot;&gt;</span><br><span class="line"></span><br><span class="line">   &lt;access-log path=&quot;logs/access.log&quot; archive-format=&quot;access-%Y%m%d.log.gz&quot; format=&#x27;%s` %&#123;loginidweaver&#125;c` %D` %h` %n` %u` &quot;%t&quot;` &quot;%r&quot;`  &quot;%&#123;Referer&#125;i&quot;&#x27; rollover-period=&quot;1D&quot;&gt;</span><br><span class="line">	   &lt;exclude&gt;\.gif$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.jpg$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.png$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.js$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.css$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.html$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.htm$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.swf$&lt;/exclude&gt;</span><br><span class="line">	   &lt;exclude&gt;\.cur$&lt;/exclude&gt;</span><br><span class="line">	&lt;/access-log&gt;</span><br><span class="line"></span><br><span class="line">	&lt;stdout-log path=&quot;log/stdout.log&quot; archive-format=&quot;stdout-%Y%m%d.log.gz&quot; timestamp=&quot;[%Y.%m.%d %H:%M:%S.%s]&quot; rollover-period=&quot;1D&quot;/&gt;</span><br><span class="line">	&lt;stderr-log path=&quot;log/stderr.log&quot; archive-format=&quot;stderr-%Y%m%d.log.gz&quot; timestamp=&quot;[%Y.%m.%d %H:%M:%S.%s]&quot; rollover-period=&quot;1D&quot;/&gt;</span><br><span class="line"></span><br><span class="line">      &lt;!--</span><br><span class="line">         - webapps can be overridden/extended in the resin.xml</span><br><span class="line">        --&gt;</span><br><span class="line">      &lt;web-app id=&quot;/&quot; root-directory=&quot;/usr/weaver/ecology&quot;&gt;</span><br><span class="line">			&lt;servlet-mapping url-pattern=&#x27;/weaver/*&#x27; servlet-name=&#x27;invoker&#x27;/&gt;</span><br><span class="line">			&lt;form-parameter-max&gt;100000&lt;/form-parameter-max&gt;</span><br><span class="line">      &lt;/web-app&gt;</span><br><span class="line"></span><br><span class="line">    &lt;/host&gt;</span><br></pre></td></tr></table></figure>

<h3 id="（4）-服务（三个文件）"><a href="#（4）-服务（三个文件）" class="headerlink" title="（4） 服务（三个文件）"></a>（4） 服务（三个文件）</h3><p>resin.sh(Resin4&#x2F;bin&#x2F;resin.sh)根据实际设置 JDK 路径 </p>
<p>JAVA_HOME&#x3D;<font color = red><strong>&#x2F;usr&#x2F;weaver&#x2F;jdk1.8.0_151</strong></font></p>
<p>startresin.sh(Resin4&#x2F;bin&#x2F;startresin.sh)根据实际设置 resin.sh 路径 </p>
<p>ulimit -n 65535 </p>
<p>export LC_ALL&#x3D;zh_CN.gbk </p>
<p>export LANG&#x3D;zh_CN.gbk</p>
<p> <font color = red>&#x2F;usr&#x2F;weaver&#x2F;Resin4&#x2F;bin&#x2F;resin.sh</font>&gt; start </p>
<p><strong>stopresin.sh</strong>(Resin4&#x2F;bin&#x2F;stopresin.sh) 根据实际设置 resin.sh 路径 </p>
<p><font color = red>&#x2F;usr&#x2F;weaver&#x2F;Resin4&#x2F;bin&#x2F;resin.sh</font> stop</p>
<h3 id="（5）-检查字符集"><a href="#（5）-检查字符集" class="headerlink" title="（5） 检查字符集"></a>（5） 检查字符集</h3><p><font color=red>不建议修改，修改后Linux环境会乱码，可跳过</font></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115214450615-1786737702.png" alt="image-20231115214449680"></p>
<p>检查当前系统是不是使用 zh_CN.gbk </p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">env | grep LANG</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114214458667-1551846510.png" alt="image-20231114214453735"></p>
<p>若不是 zh_CN.gbk 字符集，则通过 <code>export LANG=zh_CN.gbk</code> 命令来指定</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114214607453-1678677455.png" alt="image-20231114214606820"></p>
<p>这种方式在重启系统后将失效，若要一直有效，可编辑<code>/etc/profile</code> 文件</p>
<p>在最后添加 <code>export LANG=zh_CN.gbk</code></p>
<h3 id="（6）对目录赋予权限"><a href="#（6）对目录赋予权限" class="headerlink" title="（6）对目录赋予权限"></a>（6）对目录赋予权限</h3><p>对Resin 和 jdk 目录使用 <code>chmod +x </code>赋予可执行权限</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114215811531-645230160.png" alt="image-20231114215810827"></p>
<p>命令如下</p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd /usr/weaver/</span><br><span class="line">chmod +x Resin4/*</span><br><span class="line">chmod +x jdk1.8.0_151/*</span><br></pre></td></tr></table></figure>

<h3 id="（7）检查文件格式"><a href="#（7）检查文件格式" class="headerlink" title="（7）检查文件格式"></a>（7）检查文件格式</h3><p>（在 windows 下编写的脚本文件，放到 Linux 中无法识别）</p>
<p>切换到Resin的bin目录，使用 <code>vi</code>命令查看shell脚本内容 </p>
<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd /usr/weaver/Resin4/bin</span><br><span class="line">vi startresin.sh </span><br></pre></td></tr></table></figure>



<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114220051926-1511995118.png" alt="image-20231114220051405"></p>
<p>显示内容如下</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114220549524-1712176701.png" alt="image-20231114220548940"></p>
<p>如果是这个结果，则代表文件格式是正确的，直接输入<code>:q!</code> (冒号+q+感叹号表示不保存修) 改直接退出 vi 操作</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114220638753-1823912521.png" alt="image-20231114220638213"></p>
<p>如果是这个结果，则代表文件格式是错误的，需要转换格式，否则无法启动</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114220713509-403661258.png" alt="image-20231114220713062"></p>
<p>输入<code>:set ff=unix</code> (冒号+set+空格+ff 等于 unix 表示把文件格式由 dos 转换为 unix)</p>
<p> 回车后再输入<code>:wq</code> (冒号+w+q 表示保存之前的修改并退出 vi 操作)</p>
<p> 除了 startresin.sh 外，resin.sh 和 stopresin.sh 也必须检查，保证文件格式正确</p>
<h2 id="初始化数据库"><a href="#初始化数据库" class="headerlink" title="初始化数据库"></a>初始化数据库</h2><h3 id="修改验证码"><a href="#修改验证码" class="headerlink" title="修改验证码"></a>修改验证码</h3><p>为方便记忆及日后license维护，可以修改验证码默认值为1</p>
<p>验证码默认值为<code>wEAver2018</code>可在文件 <code>ecology\WEB-INF\code.key</code> 中查看</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114222545494-920588789.png" alt="image-20231114222537960"></p>
<p>可直接修改<code>code.key</code> 文件，也可通过初始化页面修改</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114222716045-1613342454.png" alt="image-20231114222715608"></p>
<h3 id="创建数据库"><a href="#创建数据库" class="headerlink" title="创建数据库"></a>创建数据库</h3><p>因为无论是否使用现有数据库，数据库均需手动到数据库中创建，程序无法自动生成</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114223330170-2022909818.png" alt="image-20231114223322650"></p>
<p>手动创建数据库</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114223233386-79675942.png" alt="image-20231114223232833"></p>
<p>创建好后即可开始初始化数据库，初始化耗时较长，需耐心等待</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231114223529763-1002787339.png" alt="image-20231114223529239"></p>
<p>若想重新初始化数据库将<code>ecology\WEB-INF\prop\weaver.properties</code>文件内容清空</p>
<p>重启服务后重新访问OA地址即可重新进入初始化界面</p>
<p>当然，也可直接修改数据库连接地址，数据库名，用户名，密码等配置信息</p>
<p>数据库初始化完成之后重新登录系统即可,管理员初始密码为 <code>Weaver@2001</code>,可通过sql改为1</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 将用户登录密码改为1   默认密码 Weaver@2001</span></span><br><span class="line"><span class="keyword">update</span> hrmresource <span class="keyword">set</span> password<span class="operator">=</span><span class="string">&#x27;C4CA4238A0B923820DCC509A6F75849B&#x27;</span> </span><br><span class="line"><span class="comment">-- 系统管理员登录密码改为1</span></span><br><span class="line"><span class="keyword">update</span> hrmresourcemanager <span class="keyword">set</span> password<span class="operator">=</span><span class="string">&#x27;C4CA4238A0B923820DCC509A6F75849B&#x27;</span> </span><br></pre></td></tr></table></figure>



<p>首次登录需要提交license授权文件，授权后会进入Ecology升级确认页面，按操作指引操作即可</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115125011991-1623633147.png" alt="image-20231115125011884"></p>
<h2 id="启用非标功能"><a href="#启用非标功能" class="headerlink" title="启用非标功能"></a>启用非标功能</h2><h3 id="申请非标包"><a href="#申请非标包" class="headerlink" title="申请非标包"></a>申请非标包</h3><p>可通过<code>Ecology功能及版本升级申请流程</code> 申请本地DEMO非标包</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115131356664-529486860.png" alt="image-20231115131356893"></p>
<p>申请时需注意以下信息</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115131226869-1922554369.png" alt="image-20231115131226722"></p>
<h3 id="升级非标"><a href="#升级非标" class="headerlink" title="升级非标"></a>升级非标</h3><p>将非标包解压后直接覆盖到ecology目录，重启Resin服务</p>
<p>重启后重新访问OA进入升级页面</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115220236614-1231633897.png" alt="image-20231115220235973"></p>
<p>使用系统管理员账号登录，进行升级操作</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115220326442-1582505146.png" alt="image-20231115220325965"></p>
<p>填写数据库地址后六位信息及数据库名后三位</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115220737085-1842553394.png" alt="image-20231115220736382"></p>
<p>详细信息可在 <code>ecology/WEB-INF/prop/weaver.properties</code> 中查看</p>
<p>以我本地服务为例，数据库地址为 127.0.0.1，后六位为 .0.0.1；数据库名为ecology,后三位为ogy</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115221002253-1830263147.png" alt="image-20231115221001654"></p>
<p>重要提醒确认</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115221154375-881579704.png" alt="image-20231115221153868"></p>
<p>确认其他配置</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115221214671-1405785337.png" alt="image-20231115221214071"></p>
<p>点击确定后开始执行sql脚本</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115221319940-1568502724.png" alt="image-20231115221319203"></p>
<p>脚本执行完毕后重新登录OA进入<strong>Ecology升级完成确认页面</strong>，按照操作指引一次点击下一步即可</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115223622481-1394942944.png" alt="image-20231115223621537"></p>
<h3 id="启用非标"><a href="#启用非标" class="headerlink" title="启用非标"></a>启用非标</h3><p>使用系统管理员登录OA后右上角设置按钮点击授权信息</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115223817514-1164129625.png" alt="image-20231115223816956"></p>
<p>此时非标功能启用情况已启用数量为0</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115223907249-868811263.png" alt="image-20231115223906464"></p>
<p>点击蓝色链接进入非标功能管理界面，勾选需要启用的非标进行启用</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115224035412-509391539.png" alt="image-20231115224034684"></p>
<p>启用时会有相应提醒</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115224133592-5872113.png" alt="image-20231115224132848"></p>
<p>启用后可重新查看已启用数量确认</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231115224239180-1488921123.png" alt="image-20231115224238550"></p>
 
      <!-- reward -->
      
      <div id="reword-out">
        <div id="reward-btn">
          Donate
        </div>
      </div>
      
    </div>
    

    <!-- copyright -->
    
    <div class="declare">
      <ul class="post-copyright">
        <li>
          <i class="ri-copyright-line"></i>
          <strong>Copyright： </strong>
          
          Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
          
        </li>
      </ul>
    </div>
    
    <footer class="article-footer">
       
<div class="share-btn">
      <span class="share-sns share-outer">
        <i class="ri-share-forward-line"></i>
        分享
      </span>
      <div class="share-wrap">
        <i class="arrow"></i>
        <div class="share-icons">
          
          <a class="weibo share-sns" href="javascript:;" data-type="weibo">
            <i class="ri-weibo-fill"></i>
          </a>
          <a class="weixin share-sns wxFab" href="javascript:;" data-type="weixin">
            <i class="ri-wechat-fill"></i>
          </a>
          <a class="qq share-sns" href="javascript:;" data-type="qq">
            <i class="ri-qq-fill"></i>
          </a>
          <a class="douban share-sns" href="javascript:;" data-type="douban">
            <i class="ri-douban-line"></i>
          </a>
          <!-- <a class="qzone share-sns" href="javascript:;" data-type="qzone">
            <i class="icon icon-qzone"></i>
          </a> -->
          
          <a class="facebook share-sns" href="javascript:;" data-type="facebook">
            <i class="ri-facebook-circle-fill"></i>
          </a>
          <a class="twitter share-sns" href="javascript:;" data-type="twitter">
            <i class="ri-twitter-fill"></i>
          </a>
          <a class="google share-sns" href="javascript:;" data-type="google">
            <i class="ri-google-fill"></i>
          </a>
        </div>
      </div>
</div>

<div class="wx-share-modal">
    <a class="modal-close" href="javascript:;"><i class="ri-close-circle-line"></i></a>
    <p>扫一扫，分享到微信</p>
    <div class="wx-qrcode">
      <img src="//api.qrserver.com/v1/create-qr-code/?size=150x150&data=http://example.com/2023/11/14/E9%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C/" alt="微信分享二维码">
    </div>
</div>

<div id="share-mask"></div>  
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Ecology/" rel="tag">Ecology</a></li></ul>

    </footer>
  </div>

   
  <nav class="article-nav">
    
      <a href="/2023/11/16/Git%E5%9B%A0%E6%96%87%E4%BB%B6%E8%BF%87%E5%A4%A7%E5%AF%BC%E8%87%B4%E6%8F%90%E4%BA%A4%E5%A4%B1%E8%B4%A5%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/" class="article-nav-link">
        <strong class="article-nav-caption">上一篇</strong>
        <div class="article-nav-title">
          
            Git因文件过大导致提交失败解决方案
          
        </div>
      </a>
    
    
      <a href="/2023/11/14/%E5%AE%9A%E5%88%B6%E5%8C%96%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E9%A1%B9%E7%9B%AE-day2/" class="article-nav-link">
        <strong class="article-nav-caption">下一篇</strong>
        <div class="article-nav-title">定制化代码生成项目_day2</div>
      </a>
    
  </nav>

   
<!-- valine评论 -->
<div id="vcomments-box">
  <div id="vcomments"></div>
</div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="https://cdn.staticfile.org/valine/1.4.16/Valine.min.js"></script>
<script>
  new Valine({
    el: "#vcomments",
    app_id: "dx3B54wOwhi75vxC2IAZagtg-gzGzoHsz",
    app_key: "m4k2fhnFa1iPI4vbofHqMY5X",
    path: window.location.pathname,
    avatar: "monsterid",
    placeholder: "给我的文章加点评论吧~",
    recordIP: true,
  });
  const infoEle = document.querySelector("#vcomments .info");
  if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
    infoEle.childNodes.forEach(function (item) {
      item.parentNode.removeChild(item);
    });
  }
</script>
<style>
  #vcomments-box {
    padding: 5px 30px;
  }

  @media screen and (max-width: 800px) {
    #vcomments-box {
      padding: 5px 0px;
    }
  }

  #vcomments-box #vcomments {
    background-color: #fff;
  }

  .v .vlist .vcard .vh {
    padding-right: 20px;
  }

  .v .vlist .vcard {
    padding-left: 10px;
  }
</style>

 
   
  
   
    <script src="https://cdn.staticfile.org/twikoo/1.4.18/twikoo.all.min.js"></script>
    <div id="twikoo" class="twikoo"></div>
    <script>
        twikoo.init({
            envId: ""
        })
    </script>
 
</article>

</section>
      <footer class="footer">
  <div class="outer">
    <ul>
      <li>
        Copyrights &copy;
        2023
        <i class="ri-heart-fill heart_icon"></i> Shiguang
      </li>
    </ul>
    <ul>
      <li>
        
      </li>
    </ul>
    <ul>
      <li>
        
        
        <span>
  <span><i class="ri-user-3-fill"></i>Visitors:<span id="busuanzi_value_site_uv"></span></span>
  <span class="division">|</span>
  <span><i class="ri-eye-fill"></i>Views:<span id="busuanzi_value_page_pv"></span></span>
</span>
        
      </li>
    </ul>
    <ul>
      
    </ul>
    <ul>
      
    </ul>
    <ul>
      <li>
        <!-- cnzz统计 -->
        
        <script type="text/javascript" src='https://s9.cnzz.com/z_stat.php?id=1278069914&amp;web_id=1278069914'></script>
        
      </li>
    </ul>
  </div>
</footer>    
    </main>
    <div class="float_btns">
      <div class="totop" id="totop">
  <i class="ri-arrow-up-line"></i>
</div>

<div class="todark" id="todark">
  <i class="ri-moon-line"></i>
</div>

    </div>
    <aside class="sidebar on">
      <button class="navbar-toggle"></button>
<nav class="navbar">
  
  <div class="logo">
    <a href="/"><img src="/images/ayer-side.svg" alt="時光"></a>
  </div>
  
  <ul class="nav nav-main">
    
    <li class="nav-item">
      <a class="nav-item-link" href="/">主页</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/archives">归档</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/categories">分类</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags">标签</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/friends">友链</a>
    </li>
    
  </ul>
</nav>
<nav class="navbar navbar-bottom">
  <ul class="nav">
    <li class="nav-item">
      
      <a class="nav-item-link nav-item-search"  title="Search">
        <i class="ri-search-line"></i>
      </a>
      
      
      <a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
        <i class="ri-rss-line"></i>
      </a>
      
    </li>
  </ul>
</nav>
<div class="search-form-wrap">
  <div class="local-search local-search-plugin">
  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
  <div id="local-search-result" class="local-search-result"></div>
</div>
</div>
    </aside>
    <div id="mask"></div>

<!-- #reward -->
<div id="reward">
  <span class="close"><i class="ri-close-line"></i></span>
  <p class="reward-p"><i class="ri-cup-line"></i>请我喝杯咖啡吧~</p>
  <div class="reward-box">
    
    <div class="reward-item">
      <img class="reward-img" src="/images/alipay.jpg">
      <span class="reward-type">支付宝</span>
    </div>
    
    
    <div class="reward-item">
      <img class="reward-img" src="/images/wechat.jpg">
      <span class="reward-type">微信</span>
    </div>
    
  </div>
</div>
    
<script src="/js/jquery-3.6.0.min.js"></script>
 
<script src="/js/lazyload.min.js"></script>

<!-- Tocbot -->
 
<script src="/js/tocbot.min.js"></script>

<script>
  tocbot.init({
    tocSelector: ".tocbot",
    contentSelector: ".article-entry",
    headingSelector: "h1, h2, h3, h4, h5, h6",
    hasInnerContainers: true,
    scrollSmooth: true,
    scrollContainer: "main",
    positionFixedSelector: ".tocbot",
    positionFixedClass: "is-position-fixed",
    fixedSidebarOffset: "auto",
  });
</script>

<script src="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.js"></script>
<link
  rel="stylesheet"
  href="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.css"
/>
<script src="https://cdn.staticfile.org/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js"></script>

<script src="/dist/main.js"></script>

<!-- ImageViewer -->
 <!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>

    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">

        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>

        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                <!--  Controls are self-explanatory. Order can be changed. -->

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                            <div class="pswp__preloader__donut"></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div>
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>

        </div>

    </div>

</div>

<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/default-skin/default-skin.min.css">
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.js"></script>
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe-ui-default.min.js"></script>

<script>
    function viewer_init() {
        let pswpElement = document.querySelectorAll('.pswp')[0];
        let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))

        $imgArr.forEach(($em, i) => {
            $em.onclick = () => {
                // slider展开状态
                // todo: 这样不好，后面改成状态
                if (document.querySelector('.left-col.show')) return
                let items = []
                $imgArr.forEach(($em2, i2) => {
                    let img = $em2.getAttribute('data-idx', i2)
                    let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
                    let title = $em2.getAttribute('alt')
                    // 获得原图尺寸
                    const image = new Image()
                    image.src = src
                    items.push({
                        src: src,
                        w: image.width || $em2.width,
                        h: image.height || $em2.height,
                        title: title
                    })
                })
                var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
                    index: parseInt(i)
                });
                gallery.init()
            }
        })
    }
    viewer_init()
</script> 
<!-- MathJax -->

<!-- Katex -->

<!-- busuanzi  -->
 
<script src="/js/busuanzi-2.3.pure.min.js"></script>
 
<!-- ClickLove -->

<!-- ClickBoom1 -->

<!-- ClickBoom2 -->

<!-- CodeCopy -->
 
<link rel="stylesheet" href="/css/clipboard.css">
 <script src="https://cdn.staticfile.org/clipboard.js/2.0.10/clipboard.min.js"></script>
<script>
  function wait(callback, seconds) {
    var timelag = null;
    timelag = window.setTimeout(callback, seconds);
  }
  !function (e, t, a) {
    var initCopyCode = function(){
      var copyHtml = '';
      copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
      copyHtml += '<i class="ri-file-copy-2-line"></i><span>COPY</span>';
      copyHtml += '</button>';
      $(".highlight .code pre").before(copyHtml);
      $(".article pre code").before(copyHtml);
      var clipboard = new ClipboardJS('.btn-copy', {
        target: function(trigger) {
          return trigger.nextElementSibling;
        }
      });
      clipboard.on('success', function(e) {
        let $btn = $(e.trigger);
        $btn.addClass('copied');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-checkbox-circle-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPIED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-checkbox-circle-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
      clipboard.on('error', function(e) {
        e.clearSelection();
        let $btn = $(e.trigger);
        $btn.addClass('copy-failed');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-time-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPY FAILED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-time-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
    }
    initCopyCode();
  }(window, document);
</script>
 
<!-- CanvasBackground -->

<script>
  if (window.mermaid) {
    mermaid.initialize({ theme: "forest" });
  }
</script>


    
    

  </div>
</body>

</html>